Today, computer graphics is used in a wide variety of applications, such as in business, science, animation, simulation, computer-aided design, process control, electronic publication, etc. In an effort to portray a more realistic real-world representation, three dimensional objects are transformed into models having the illusion of depth for display onto a two-dimensional computer screen. This is accomplised by using a number of polygons to represent a three-dimensional object. Complex three-dimensional objects may require upwards of hundreds of polygons in order to form an accurate model. Hence, a three-dimensional object can be readily manipulted (e.g., displayed in a different location, rotated, scaled, etc.) by processing the individual respective polygons corresponding to that object. Next, a scan conversion process is used to determine which pixels of a computer display fall within each of the specified polygons. Thereupon, texture is applied to only those pixels residing within specified polygons. In addition, hidden or obsured surfaces, which are normally not visible, are eliminated from view. Hence, displaying a three-dimensional object on a computer system is a rather complicated task and can require a tremendous amount of processing power.
This is especially true for those cases involving dynamic computer graphics for displaying three-dimensional objects that are in motion. In order to simulate smooth motion, the computer system should have a frame rate of at least 30 hertz. In other words, new images should be updated, redrawn and displayed at least thirty times a second. This imposes a heavy processing and computational burden on the computer system. Indeed, even more processing power is required for interactive computer graphics, where displayed images change in response to a user input. A good example of interactive computer graphics is that of a flight simulator. The terrain changes, depending upon where the user directs the aircraft to fly. An interactive simulation becomes more realistic and useful when a number of moving objects are introduced. For instance, a flight simulator for training jet fighter pilots should optimally display other friendly and enemy aircraft, helicopters, tanks, trucks, trains, ships, as well as other objects that one could reasonably expect to encounter in a battlefield situation. A pilot's training and experience are enhanced by simulating a stressful environment where a lot of action with numerous different objects are occurring.
However, each extra object (e.g., an enemy helicopter) that is added into a scene needs to be modeled, scan converted, textured, Z-buffered for depth, etc., all of which, adds to the amount of processing resources that is required. In addition, it would be highly preferable if lighting, shadowing, shading, and different weather conditions could be included as part of the interactive simulation. Providing these special effects, again, consumes valuable processing resources. Hence, a major problem associated with producing realistic interactive three-dimensional simulations is that it requires such a tremendous amount of processing power. The "richer" and more realistic a scene becomes, the more processing power that is required to render that scene. Moreover, speed becomes a major limiting factor as the computer must render millions of pixels in order to process these amazingly complex scenes every three-tenths of a second.
In an effort to minimize the processing burden, some prior art computer graphics systems have culled out extraneous details so that they need not be rendered for display. One method for accomplishing this is to reduce the number of polygons used to model an object. For instance, rather than using 500 polygons to model an object, the object is modeled with just 200 polygons. However, the disadvantage to this approach is that it results in an inferior picture quality. Reducing the number of polygons makes that object coarser in appearance. As a result, quality is sacrificed at the expense of conserving processing resources.
Another prior art approach for minimizing the requisite processing involves the use of "billboards." Basically, billboards are two-dimensional representations; they lack depth. By analogy, billboards are similar to props or fronts used in movie sets. Instead of modeling a complex object three-dimensionally, it is billboarded. For instance, trees are commonly displayed by the use of billboards because they are so difficult to model in 3-D. The billboard of a tree rotates in sync with a user's viewpoint so that it's almost constantly facing the user. However, one disadvantage with using billboards is that they are typically limited to representing only static objects (e.g., trees, mountains, buildings, etc.). Another disadvantage is that a billboard looks awkward when viewed at extreme angles. For example, one can never see the top of a billboarded tree. Likewise, if one attempts to walk around a billboarded tree, the tree would become narrower and narrower until it eventually becomes a straight line and then disappears.
Yet another prior art method for reducing processing requirements is to use different levels of detail. This prior art concept is based on the fact that human perception discerns greater amounts of detail when an object is closer to the user. As the object gets further away from the viewer it becomes smaller, and hence, less distinct and blurred. Consequently, the display characteristics of an object are pre-computed at different levels of detail and stored into memory. When viewed at close range, a high level of detail is used to display the object. Conversely, when the object is far away, a low level of detail is rendered for display. For example, a house might be rendered with a porch, a chimney, and window shutters at a high level of detail. In a lower level of detail, the house is smaller, and the shutters might not be shown. The chimney might be eliminated in the next lower level of detail. One problem with this prior art approach is that when the computer system transitions between two levels of detail, the differences between the two levels tend to "pop" in and out of display. For example, as one gets closer to the house, the chimney might all of a sudden pop into view. Furthermore, as one transistions back and forth across the threshold between these two different levels of detail, it could result in a blinking or flashing anomaly. Since the human eye tends to cue in on movement, a flashing anomaly attracts attention and can be extremely disconcerting and annoying. For example, a blinking chimney ruins the realism of that visual simulation.
Yet another problem associated with real-time three-dimensional interactive simulations pertains to load management. A computer system has a fixed and limited processing capability, for example, the capability to process 40,000 polygons. It is desirable to run the computer system at its peak performance in order to render the most realistic images. It is also desirable to maintain this processing load at a consistent level for smooth, clean displays. However, these two goals are difficult to achieve because the scene is constantly changining and objects are constantly moving into and out of view. For instance, one scene might only depict a solitary car, whereas a subsequent scene might have twenty cars (e.g., rush hour traffic). The subsequent scene would thereby require additional processing resources over the first scene. There could be serious problems if all of the processing power had already been consumed in rendering the first scene.
Therefore, there is a need in the prior art for an apparatus and method that could somehow display full, robust, and realistic interactive three-dimensional graphics on a computer system while minimizing the required processing. It would be preferable if such an apparatus and method could somehow minimize anomalies associated during transisfions between levels of detail and also aid in maintaining a consistent load.